package com.example.springboot_demo.Common;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;

public class JSONUtil {
    // 创建一个单例的 ObjectMapper 实例，因为它是线程安全的，并且创建开销较大
    private static final ObjectMapper objectMapper = new ObjectMapper();

    // 私有构造函数，防止实例化工具类
    private JSONUtil() {
    }

    // 将 Java 对象序列化为 JSON 字符串
    public static String toJsonString(Object obj) {
        try {
            return objectMapper.writeValueAsString(obj);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
            throw new RuntimeException("Java 对象序列化为 JSON 字符串时出错", e);
        }
    }

    // 将 JSON 字符串反序列化为 Java 对象
    public static <T> T fromJsonString(String jsonString, Class<T> clazz) {
        try {
            return objectMapper.readValue(jsonString, clazz);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
            throw new RuntimeException("JSON 字符串反序列化为 Java 对象时出错", e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}
